let prefix = "role";

// 当前table相关信息
let table = {
    config: {},
    // 当前实例配置
    options: {},
    // 设置实例配置
    set: function () {
        let tableId = $(event.currentTarget).parents(".bootstrap-table").find("table.table").eq(1).attr("id");
        table.options = table.get(tableId);
    },
    // 获取实例配置
    get: function (id) {
        return table.config[id];
    },
    // 记住选择实例组
    rememberSelecteds: {},
    // 记住选择ID组
    rememberSelectedIds: {}
};

$(function () {

    //1.初始化Table
    let oTable = new TableInit();
    oTable.Init();

    //2.初始化Button的点击事件
    let oButtonInit = new ButtonInit();
    oButtonInit.Init();

});


let TableInit = function () {
    let oTableInit = {};
    //初始化Table
    oTableInit.Init = function () {
        $('#bootstrap-table').bootstrapTable({
            url: prefix + "/list",              //请求后台的URL（*）
            method: 'post',                     //请求方式（*）
            contentType: "application/x-www-form-urlencoded",   // 编码类型
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            sortable: true,                     //是否启用排序
            sortStable: true,                   // 设置为 true 将获得稳定的排序
            sortName: 'roleId',
            sortOrder: 'asc',
            queryParams: queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,                      //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
            showColumns: true,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            search: false,
            showSearch: true,
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: true,                //是否启用点击选中行
            height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                     //每一行的唯一标识，一般为主键列
            showToggle: true,                   //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                  //是否显示父子表
            totalRows: 2,
            fixedColumns: false,
            fixedNumber: 0,
            fixedRightNumber: 0,
            columns: [{
                checkbox: true
            }, {
                field: 'roleId',
                title: '角色编号'
            }, {
                field: 'roleName',
                title: '角色名称',
                sortable: true
            }, {
                field: 'roleKey',
                title: '权限字符',
                sortable: true
            }, {
                field: 'roleSort',
                title: '显示顺序',
                sortable: true
            }, {
                title: '角色状态',
                align: 'center',
                formatter: function (value, row) {
                    return statusTools(row);
                }
            }, {
                field: 'createTime',
                title: '创建时间'
            }, {
                title: '操作',
                align: 'center',
                formatter: function (value, row) {
                    let actions = [];
                    actions.push('<a class="btn btn-success btn-xs ' + '" href="javascript:void(0)" onclick="edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                    actions.push('<a class="btn btn-danger btn-xs ' + '" href="javascript:void(0)" onclick="remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a> ');
                    actions.push('<a tabindex="0" class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
                    return actions.join('');
                }
            },]
        });

        // 查询条件
        function queryParams(params) {
            let curParams = {
                // 传递参数查询参数
                pageSize: params.limit,
                pageNum: params.offset / params.limit + 1,
                searchValue: params.search,
                orderByColumn: params.sort,
                isAsc: params.order
            };
            let currentId = isEmpty(table.options.formId) ? $('form').attr('id') : table.options.formId;
            return $.extend(curParams, formToJSON(currentId));
        }
    };


    /* 角色状态显示 */
    function statusTools(row) {
        if (row.status === "1") {
            return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="enable(\'' + row.roleId + '\')"></i> ';
        } else {
            return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="disable(\'' + row.roleId + '\')"></i> ';
        }
    }

    return oTableInit;
};


let ButtonInit = function () {
    let oInit = {};

    oInit.Init = function () {
        //初始化页面上面的按钮事件
    };

    return oInit;
};


//搜索
tableSearch = function () {
    let tableId = $("#bootstrap-table");
    let params = tableId.bootstrapTable('getOptions');
    tableId.bootstrapTable('refresh', params);
}

//重置
tableReset = function () {
    $("#role-form")[0].reset();
    $("#bootstrap-table").bootstrapTable('refresh', []);
}

/* 角色管理-停用 */
function disable(roleId) {
    confirm("确认要停用角色吗？", function () {
        $.ajax({
            type: 'POST',
            url: prefix + "/changeStatus",
            data: {
                roleId: roleId,
                status: 1
            },
            success: function (result) {
                if (result.code === 0) {
                    $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
                }
            }
        });
    })
}

/* 角色管理启用 */
function enable(roleId) {
    confirm("确认要启用角色吗？", function () {
        $.ajax({
            type: 'POST',
            url: prefix + "/changeStatus",
            data: {
                roleId: roleId,
                status: 0
            },
            success: function (result) {
                if (result.code === 0) {
                    $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
                }
            }
        });
    })
}

//添加
function add() {
    layer.open({
        type: 2,
        area: ['800px', '800px'],
        fix: false,
        //不固定
        maxmin: true,
        shade: 0.3,
        title: "添加角色",
        content: prefix + "/add",
        btn: ['确定', '关闭'],
        // 弹层外区域关闭
        shadeClose: true,
        yes: function (index, layero) {
            let iframeWin = layero.find('iframe')[0];
            iframeWin.contentWindow.add(index, layero);
            $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
        },
        cancel: function () {
            return true;
        }
    });
}

//修改
function edit(roleId) {
    let getRows = $("#bootstrap-table").bootstrapTable("getSelections");
    if (getRows.length !== 1 && typeof (roleId) == "undefined") {
        layer.alert("请选择一条记录", {
            icon: "warning",
            title: "系统提示",
            btn: ['确认'],
            btnclass: ['btn btn-primary'],
        });
    } else {
        let id;
        if (typeof (roleId) == "undefined") {
            id = getRows[0].roleId;
        } else {
            id = roleId
        }
        layer.open({
            type: 2,
            area: ['800px', '800px'],
            fix: false,
            maxmin: true,
            shade: 0.3,
            title: "添加角色",
            content: prefix + "/edit/" + id,
            btn: ['确定', '关闭'],
            // 弹层外区域关闭
            shadeClose: true,
            yes: function (index, layero) {
                let iframeWin = layero.find('iframe')[0];
                iframeWin.contentWindow.edit(index, layero);
                $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
            },
            cancel: function () {
                return true;
            }
        });
    }

}

// 删除信息
function remove(roleId) {
    confirm("确定删除该条信息吗？", function () {
        $.ajax({
            type: 'POST',
            url: prefix + "/remove",
            data: {
                ids: roleId
            },
            success: function (result) {
                if (result.code === 0) {
                    $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
                }
            }
        });
    });
}

//批量删除
function removeAll() {
    let getRows = $("#bootstrap-table").bootstrapTable("getSelections");
    if (getRows.length === 0) {
        layer.alert("请至少选择一条记录", {
            icon: "warning",
            title: "系统提示",
            btn: ['确认'],
            btnclass: ['btn btn-primary'],
        });
    } else {
        let ids = [];
        for (let i = 0; i < getRows.length; i++) {
            ids[i] = getRows[i].roleId;
        }
        confirm("确定删除这些信息吗？", function () {
            $.ajax({
                type: 'POST',
                url: prefix + "/remove",
                data: {
                    ids: ids.join()
                },
                success: function (result) {
                    if (result.code === 0) {
                        $("#bootstrap-table").bootstrapTable('refresh', {silent: true});
                    }
                }
            });
        });
    }
}

// 确认窗体
confirm = function (content, callBack) {
    layer.confirm(content, {
        icon: 3,
        title: "系统提示",
        btn: ['确认', '取消']
    }, function (index) {
        layer.close(index);
        callBack(true);
    });
}